import type {
  EntityApi,
  EntityReq,
  EntityModel,
  EntityList,
  EntityPage,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
  Entry,
} from "jmash-core";

// 任务定义
export interface JobDefineApi extends EntityApi {}

// 任务定义查询
export interface JobDefineReq extends EntityReq {
  //  状态
  enable?: boolean;
  //  是否包含状态
  hasEnable?: boolean;
  //  任务分类
  classify?: string;
  //  任务中文名称模糊搜索
  likeJobCnName?: string;
}

// 任务定义实体
export interface JobDefineModel extends EntityModel {
  //  任务名称
  jobName?: string;
  //  任务分类
  classify?: string;
  //  运行实例
  instanceName?: string;
  //  状态
  enable?: boolean;
  //  运行权重
  weight?: number;
  //  触发事件
  eventName?: string;
  //  触发事件内容
  eventBody?: string;
  // 任务中文名称
  jobCnName?: string;
  //  任务描述
  jobDescribe?: string;
}

//任务定义列表
export interface JobDefineList extends EntityList {
  // 内容
  results: Array<JobDefineModel>;
}

// 任务定义分页
export interface JobDefinePage extends EntityPage {
  // 当前页内容
  results: Array<JobDefineModel>;
  // 本页小计
  subTotalDto: JobDefineModelTotal;
  // 合计
  totalDto: JobDefineModelTotal;
}

// 合计
export interface JobDefineModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 任务定义主键
export interface JobDefineKey extends EntityKey {
  // 租户
  tenant?: string;
  // 任务名称
  jobName?: string;
}

//任务定义List
export interface JobDefineKeyList extends EntityKeyList {
  // 租户
  tenant?: string;
  // 任务名称
  jobName?: Array<string>;
}

// 任务定义新增实体
export interface JobDefineCreateReq extends EntityCreateReq {
  //  任务名称
  jobName?: string;
  //  任务分类
  classify?: string;
  //  运行实例
  instanceName?: string;
  //  状态
  enable?: boolean;
  //  运行权重
  weight?: number;
  //  触发事件
  eventName?: string;
  //  触发事件内容
  eventBody?: string;
  // 任务中文名称
  jobCnName?: string;
  //  任务描述
  jobDescribe?: string;
}

// 任务定义修改实体
export interface JobDefineUpdateReq extends EntityUpdateReq {
  //  任务名称
  jobName?: string;
  //  任务分类
  classify?: string;
  //  运行实例
  instanceName?: string;
  //  状态
  enable?: boolean;
  //  运行权重
  weight?: number;
  //  触发事件
  eventName?: string;
  //  触发事件内容
  eventBody?: string;
  // 任务中文名称
  jobCnName?: string;
  //  任务描述
  jobDescribe?: string;
}

export type JobDefineFormReq = JobDefineCreateReq | JobDefineUpdateReq;

// 启用/禁用
export interface JobDefineEnableKey {
  // 租户
  tenant?: string;
  // 任务名称
  jobName?: string;
  // 状态
  enable?: boolean;
}

// 任务分类
export interface JobDefineEntry {
  // 内容
  values: Array<Entry>;
}
